package com.miyu.system.service.sys;

import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONObject;
import com.miyu.common.pojo.book.BookRuleSet;

import javax.servlet.http.HttpServletResponse;
import java.util.List;

/**
 * sys书服务
 *
 * @author longmy
 * @date 2022/02/25
 */
public interface SysBookService {
    /**
     * 查询书
     *
     * @param param 参数
     * @return {@code JSONArray}
     */
    JSONArray queryBook(JSONObject param);

    /**
     * 查询书细节
     *
     * @param param 参数
     * @return {@code JSONArray}
     */
    JSONArray sysQueryBoookDetail(JSONObject param);

    /**
     * 查询本规则集
     *
     * @param param 参数
     * @return {@code List<BookRuleSet>}
     */
    List<BookRuleSet> queryBookRuleSet(JSONObject param);

    /**
     * 保存书规则集
     *
     * @param param 参数
     * @return {@code String}
     */
    JSONObject saveBookRuleSet(JSONObject param);

    /**
     * 删除书规则集
     *
     * @param params 参数个数
     * @return {@code String}
     */
    JSONObject delBookRuleSet(JSONArray params);

    /**
     * 校验书规则
     *
     * @param params 参数个数
     * @return {@code JSONObject}
     */
    JSONObject checkBookRule(JSONObject params);

    /**
     * 搜索书
     *
     * @param param 参数
     * @return {@code JSONArray}
     */
    JSONArray searchBook(JSONObject param);

    /**
     * 查询书细节
     *
     * @param param 参数
     * @return {@code JSONArray}
     */
    JSONObject queryBookDetail(JSONObject param);

    /**
     * 查询书章
     *
     * @param param 参数
     * @return {@link JSONObject}
     */
    JSONObject queryBookChapter(JSONObject param);

    /**
     * 查询搜索书细节
     *
     * @param param 参数
     * @return {@code JSONObject}
     */
    JSONObject querySearchBookDetail(JSONObject param);

    /**
     * 查询搜索书阅读
     *
     * @param param 参数
     * @return {@code JSONObject}
     */
    JSONObject queryBookReader(JSONObject param);

    /**
     * 查询搜索书
     *
     * @param param 参数
     * @return {@link JSONObject}
     */
    JSONObject querySearchBook(JSONObject param);

    /**
     * 下载文件
     *
     * @param param 参数
     * @return {@code HttpServletResponse}
     */
    HttpServletResponse downloadFile(JSONObject param);

    /**
     * 书籍采集
     *
     * @param param 参数
     * @return {@link JSONObject}
     */
    JSONObject collectBook(JSONObject param);


}
